package com.xscha.tableforge.service;

import com.xscha.tableforge.model.entity.App;
import com.xscha.tableforge.model.vo.PageReq;
import com.xscha.tableforge.model.vo.PageResult;

import java.util.List;
import java.util.Optional;

/**
 * 应用服务接口
 * 提供应用的增删改查等操作
 */
public interface AppService {

    /**
     * 根据空间ID查找所有应用
     *
     * @param spaceId 空间ID
     * @return 应用列表
     */
    List<App> findAllBySpaceId(String spaceId);

    /**
     * 根据ID查找应用
     *
     * @param id 应用ID
     * @return 包含应用的Optional对象
     */
    Optional<App> findById(String id);

    /**
     * 创建新的应用
     *
     * @param app 应用对象
     * @param userId 创建者用户ID
     * @return 创建后的应用对象
     */
    App createApp(App app, String userId);

    /**
     * 更新应用信息
     *
     * @param app 应用对象
     * @param userId 修改者用户ID
     * @return 更新后的应用对象
     */
    App updateApp(App app, String userId);

    /**
     * 删除应用
     *
     * @param id 应用ID
     * @param userId 删除者用户ID
     */
    void deleteApp(String id, String userId);

    /**
     * 分页查询指定空间的应用
     *
     * @param spaceId 空间ID
     * @param pageRequest 分页请求参数
     * @return 分页结果
     */
    PageResult<App> findPageBySpaceId(String spaceId, PageReq pageRequest);
}